package com.smallA.association.utils;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.springframework.stereotype.Component;

import java.util.regex.Pattern;

@Component
public class EmailUtils {
    /**
     * 发送邮件用工具类
     *
     * @param emailAddress 目标邮件地址
     * @param msg          邮件消息
     * @param msgName      邮件名称
     * @param fromName     发送者名称, 可以不写, 这样默认就是空的了
     * @return 返回邮件是否发啊送成功
     */
    public static boolean sendEmail(String emailAddress, String msg, String fromName, String msgName) {
        try {
            HtmlEmail email = new HtmlEmail();
            email.setHostName("smtp.qq.com");
            email.setCharset("utf-8");
            email.addTo(emailAddress);
            //这个就是收邮件的地址了
            email.setFrom("1990609801@qq.com", fromName);
            //此处填邮箱地址和用户名,用户名可以任意填写
            email.setSubject(msgName);
            //此处填写邮件名，邮件名可任意填写
            email.setMsg(msg);
            //此处填写邮件内容
            email.setAuthentication("1990609801@qq.com", "oomnqgofvntidjjf");
            //此处填写邮箱地址和客户端授权码
            email.setSSLOnConnect(true);
            email.setSmtpPort(465);
            //开始SSL发送通道并配置465端口发送
            email.send();
            //发送邮件
            return true;
        } catch (EmailException e) {
            return false;
        }
    }

    /**
     * 邮箱格式校验类
     *
     * @param email 邮箱地址
     * @return 返回邮箱的格式是否合法
     */
    public static boolean isValidEmail(String email) {
        if ((email != null) && (!email.isEmpty())) {
            return Pattern.matches("^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$", email);
        }
        return false;
    }
}
